ArangoDB-তে Transactions হল এমন একটি প্রক্রিয়া যা ডেটাবেস অপারেশনগুলিকে নির্ভুল এবং নির্ভরযোগ্য করতে সাহায্য করে। এটি একাধিক অপারেশনকে একটি গ্রুপ হিসাবে একত্রে চালায় এবং নিশ্চিত করে যে সব অপারেশন সফল হলে ডেটাবেস আপডেট হবে। কোনো অপারেশন ব্যর্থ হলে পুরো ট্রানজ্যাকশন বাতিল করা হয়।
ArangoDB-এর JavaScript API ব্যবহার করে ট্রানজ্যাকশন পরিচালনা করা যায়।
db._executeTransaction({
collections: {
write: ["users", "orders"]
},
action: function () {
const db = require("@arangodb").db;
db.users.insert({ name: "John Doe", age: 30 });
db.orders.insert({ product: "Laptop", price: 1500 });
}
});
AQL-এ TRANSACTION
ব্যবহার করে ট্রানজ্যাকশন পরিচালনা করা যায়।
LET result = (
FOR user IN users
FILTER user.age > 25
UPDATE user WITH { isActive: true } IN users
)
RETURN result
একাধিক ডকুমেন্ট বা কালেকশন একসঙ্গে পরিচালনা করতে:
db._executeTransaction({
collections: {
read: ["products"],
write: ["orders"]
},
action: function () {
const db = require("@arangodb").db;
let product = db.products.firstExample({ name: "Laptop" });
db.orders.insert({ productId: product._key, quantity: 1 });
}
});
ট্রানজ্যাকশনের সময় কোনো ত্রুটি ঘটলে তা rollback হয়, অর্থাৎ কোনো পরিবর্তন কার্যকর হয় না।
try {
db._executeTransaction({
collections: { write: ["users"] },
action: function () {
const db = require("@arangodb").db;
db.users.insert({ name: "Error Example" });
throw new Error("Simulated Error");
}
});
} catch (err) {
console.log("Transaction failed: " + err.message);
}
ArangoDB তে ট্রানজ্যাকশন লগ করার জন্য ArangoDB Logs
ব্যবহার করা যায়।
ArangoDB-তে Transactions ব্যবহার করে মাল্টি-ডকুমেন্ট এবং মাল্টি-কালেকশন অপারেশন নির্ভরযোগ্যভাবে পরিচালনা করা যায়। এটি ডেটার সঠিকতা এবং নিরাপত্তা নিশ্চিত করে। ডেভেলপাররা JavaScript API বা AQL ব্যবহার করে ট্রানজ্যাকশন তৈরি করতে পারেন। Error Handling এবং Debugging সুবিধা ট্রানজ্যাকশন ব্যবস্থাপনাকে আরও কার্যকর করে তোলে।
Transaction হলো একটি ডাটাবেস অপারেশনের সেট যা সম্পূর্ণ বা একত্রে সফল হওয়া উচিত। এক বা একাধিক ডেটাবেস কমান্ড একত্রে পরিচালিত হয়, এবং এর সবকটি সফল হলে ট্রানজেকশন সফল বলে বিবেচিত হয়। যদি কোনো একটিও কমান্ড ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশনটি ব্যর্থ হিসাবে গণ্য হয় এবং ডেটাবেস পূর্বাবস্থায় ফিরে যায় (Rollback হয়)।
ArangoDB-তে Transaction ব্যবহার করে একাধিক Collection-এ একই সঙ্গে Atomicity, Consistency, Isolation, এবং Durability (ACID) বৈশিষ্ট্য নিশ্চিত করা যায়।
Transaction-এর সব অপারেশন একটি একক ইউনিট হিসেবে কাজ করে। যদি একটিও ব্যর্থ হয়, তাহলে পুরো Transaction ব্যর্থ বলে গণ্য হয় এবং Rollback করা হয়।
Transaction-এর মাধ্যমে ডেটাবেস সবসময় একটি সঠিক অবস্থায় থাকে। একটি সফল Transaction ডেটাবেসের সামঞ্জস্য বজায় রাখে।
Transaction চলাকালীন অন্য কোনো Transaction তার কাজকে প্রভাবিত করতে পারে না। এটি ডেটার সঠিকতা এবং নির্ভুলতা নিশ্চিত করে।
Transaction সফলভাবে সম্পন্ন হলে এর ডেটা স্থায়ীভাবে ডাটাবেসে সংরক্ষিত হয়, এমনকি সার্ভার ব্যর্থ হলেও।
একাধিক Collection-এর উপর একত্রে অপারেশন পরিচালনার জন্য Transaction অপরিহার্য। এটি নিশ্চিত করে যে সব Collection-এ পরিবর্তন একই সঙ্গে সম্পন্ন বা বাতিল হবে।
ArangoDB-তে Transaction পরিচালনার জন্য JavaScript API, AQL এবং HTTP API ব্যবহার করা হয়।
db._executeTransaction({
collections: {
write: ["my_collection"]
},
action: function () {
var db = require('@arangodb').db;
db.my_collection.save({ name: "John Doe", age: 30 });
db.my_collection.update({ name: "John Doe" }, { age: 31 });
}
});
ব্যাখ্যা:
my_collection
-এ Transaction পরিচালিত হচ্ছে।db._executeTransaction({
collections: {
write: ["collection1", "collection2"]
},
action: function () {
var db = require('@arangodb').db;
db.collection1.save({ name: "Alice" });
db.collection2.save({ product: "Laptop", price: 1000 });
}
});
ব্যাখ্যা:
collection1
এবং collection2
-এ ডেটা একত্রে Transaction-এর মাধ্যমে পরিচালিত হয়েছে।db._executeTransaction({
collections: {
write: ["my_collection"]
},
action: function () {
var db = require('@arangodb').db;
try {
db.my_collection.save({ name: "Invalid Data" });
throw "Manual Error";
} catch (err) {
// Rollback হবে
}
}
});
ব্যাখ্যা:
Transaction ডাটাবেস অপারেশন পরিচালনার একটি গুরুত্বপূর্ণ পদ্ধতি, যা ডেটার সঠিকতা, নির্ভুলতা এবং নিরাপত্তা নিশ্চিত করে। ArangoDB-তে Transaction ব্যবহার করে Multi-Collection Operations, ACID বৈশিষ্ট্য, এবং Rollback-এর মতো সুবিধা পাওয়া যায়। এটি ডেভেলপারদের জন্য একটি অপরিহার্য টুল।
ArangoDB-তে Transaction একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা একাধিক ডকুমেন্ট এবং কালেকশন জুড়ে ডেটা সংশোধন বা প্রসেস করার সময় ACID (Atomicity, Consistency, Isolation, Durability) গুণাবলী নিশ্চিত করে। Multi-document এবং Multi-collection Transaction ব্যবহার করে ডেভেলপাররা জটিল ডেটাবেস অপারেশন সম্পাদন করতে পারেন।
একই Collection-এর মধ্যে একাধিক ডকুমেন্ট সংশোধন করার জন্য Transaction ব্যবহার:
let db = require('@arangodb').db;
db._executeTransaction({
collections: {
write: 'my_collection'
},
action: function () {
let col = db._collection('my_collection');
col.update('doc1', { status: 'processed' });
col.update('doc2', { status: 'processed' });
}
});
একাধিক Collection-এ ডেটা সংশোধন বা যোগ করার জন্য:
let db = require('@arangodb').db;
db._executeTransaction({
collections: {
write: ['collection1', 'collection2']
},
action: function () {
let col1 = db._collection('collection1');
let col2 = db._collection('collection2');
col1.save({ _key: 'doc1', name: 'Item 1', status: 'active' });
col2.save({ _key: 'doc2', related_to: 'doc1', status: 'linked' });
}
});
ArangoDB-তে একাধিক Transaction নেস্ট করে ব্যবহার করা যায় না। প্রতিটি Transaction স্বতন্ত্র হতে হবে।
Multi-document এবং Multi-collection Transaction ডেটাবেস অপারেশনগুলোকে নিরাপদ এবং কার্যকর করে। এটি ডেটার সঠিকতা বজায় রাখে এবং ডেভেলপারদের জটিল ডেটা ম্যানিপুলেশন সহজতর করতে সহায়তা করে। তবে সঠিক অপ্টিমাইজেশনের মাধ্যমে Transaction এর কার্যকারিতা নিশ্চিত করা গুরুত্বপূর্ণ।
ArangoDB-তে Transaction এমন একটি পদ্ধতি যা মাল্টি-ডকুমেন্ট বা মাল্টি-কালেকশন অপারেশন সুনির্দিষ্ট এবং নিরাপদভাবে পরিচালনা করতে সহায়তা করে। AQL-এ Transaction ব্যবহার করে আপনি ডেটা সংশোধন বা আপডেটের সময় ডেটার সঙ্গতি (Consistency) এবং নির্ভুলতা নিশ্চিত করতে পারেন।
Transaction মানে একটি নির্দিষ্ট কার্যক্রমের সেট যা সম্পূর্ণ বা একত্রে ব্যর্থ হয়। এটি ACID (Atomicity, Consistency, Isolation, Durability) বৈশিষ্ট্য মেনে চলে।
যদি একটি Transaction ব্যর্থ হয়, তবে এর প্রতিটি পরিবর্তন রোলব্যাক (Rollback) হয়, অর্থাৎ পূর্বের অবস্থায় ফিরে যায়।
Transaction একটি জাভাস্ক্রিপ্ট অবজেক্টের মাধ্যমে চালানো হয়, যা AQL কোয়েরি ধারণ করে।
Transaction চালানোর আগে কোন Collection গুলোতে কাজ হবে তা নির্ধারণ করতে হয়।
Transaction এর মধ্যবর্তী কোয়েরিগুলো একত্রে চালানো হয়।
db._executeTransaction({
collections: {
write: ["Products", "Orders"]
},
action: function () {
const db = require('@arangodb').db;
// Order তৈরি করা
db.Orders.insert({
productId: "12345",
quantity: 2,
status: "Pending"
});
// Product স্টকের সংখ্যা হালনাগাদ করা
db.Products.update("12345", { stock: 10 });
}
});
এখানে:
Products
এবং Orders
কালেকশন Transaction-এর অংশ।db._executeTransaction({
collections: {
read: ["Users"],
write: ["Payments"]
},
action: function () {
const db = require('@arangodb').db;
const query = `
FOR user IN Users
FILTER user.status == 'Active'
INSERT {
userId: user._key,
amount: 100,
status: 'Paid'
} INTO Payments
`;
db._query(query);
}
});
এখানে:
Users
থেকে ডেটা পড়া।Payments
এ নতুন ডেটা যোগ করা।db._executeTransaction({
collections: {
write: ["Accounts", "Transactions"]
},
action: function () {
const db = require('@arangodb').db;
// Accounts থেকে টাকা ডেবিট করা
db.Accounts.update("account1", { balance: db.Accounts.document("account1").balance - 500 });
// Accounts এ টাকা ক্রেডিট করা
db.Accounts.update("account2", { balance: db.Accounts.document("account2").balance + 500 });
// Transactions এ লেনদেনের তথ্য সংরক্ষণ
db.Transactions.insert({
from: "account1",
to: "account2",
amount: 500,
status: "Success"
});
}
});
Transaction এর সময় যদি কোনো ত্রুটি ঘটে, তাহলে এটি একটি Rollback ট্রিগার করে, এবং সমস্ত পরিবর্তন পূর্বের অবস্থায় ফিরে যায়।
try {
db._executeTransaction({
collections: { write: ["Orders"] },
action: function () {
const db = require('@arangodb').db;
db.Orders.insert({ orderId: "123", status: "Pending" });
throw "Manual Error"; // ইচ্ছাকৃত ত্রুটি
}
});
} catch (err) {
console.error("Transaction ব্যর্থ হয়েছে:", err);
}
AQL-এ Transaction ব্যবহার বড় এবং জটিল ডেটাবেজ অপারেশনের সময় ডেটার সঙ্গতি এবং নির্ভুলতা নিশ্চিত করে। এটি ACID বৈশিষ্ট্য মেনে চলে এবং ডেভেলপারদের ডেটা ম্যানেজমেন্ট আরও সহজ এবং নির্ভরযোগ্য করে তোলে। ArangoDB-তে Transaction ব্যবহার করে আপনি নিরাপদ এবং কার্যকর ডেটাবেজ অপারেশন করতে পারবেন।
ArangoDB তে Transaction Logging এবং Error Handling ডেটার সঠিকতা এবং নির্ভরযোগ্যতা নিশ্চিত করার জন্য গুরুত্বপূর্ণ। Transaction Logging ডাটাবেসে কার্যক্রমের একটি রেকর্ড তৈরি করে, যা সমস্যা সমাধান এবং ডিবাগিংয়ের জন্য ব্যবহৃত হয়। অন্যদিকে, Error Handling নিশ্চিত করে যে ত্রুটি মোকাবিলা করা হয়েছে এবং প্রয়োজন অনুযায়ী ব্যবস্থা নেওয়া হয়েছে।
ArangoDB তে লগিং সাধারণত Write-Ahead Logging (WAL) এর মাধ্যমে পরিচালিত হয়।
ArangoDB তে লগিং ডিফল্টরূপে সক্ষম থাকে। তবে কাস্টম কনফিগারেশনের জন্য arangod.conf
ফাইলে পরিবর্তন করতে পারেন:
[log]
level = info
output = file:///var/log/arangodb/arangod.log
আপনার ArangoDB লোগ ফাইলটি চেক করুন:
cat /var/log/arangodb/arangod.log
AQL এবং ArangoDB SDK তে try-catch
ব্লক ব্যবহার করে ত্রুটি মোকাবিলা করা যায়।
try {
let result = db._query(`
FOR doc IN myCollection
FILTER doc.value > 100
RETURN doc
`);
console.log(result);
} catch (err) {
console.error("Error occurred:", err.message);
}
বর্ণনা:
try
ব্লক সফলভাবে কোয়েরি চালানোর চেষ্টা করে।catch
ব্লক ত্রুটির বার্তা প্রদর্শন করে।let db = require("@arangodb").db;
try {
db._executeTransaction({
collections: {
write: ["myCollection"]
},
action: function () {
let collection = db._collection("myCollection");
collection.insert({ key: "value" });
throw "Simulated error"; // ত্রুটি ঘটানো
}
});
} catch (err) {
console.error("Transaction failed:", err);
}
বর্ণনা:
action
ফাংশনে লেনদেন পরিচালিত হয়।catch
ব্লক তা সনাক্ত করে।ArangoDB বিভিন্ন ধরনের ত্রুটি কোড প্রদান করে।
উদাহরণ:
if (err.errorNum === 1203) {
console.error("Document already exists!");
}
info
বা warning
স্তর ব্যবহার করুন।Transaction Logging এবং Error Handling ডাটাবেসের ডেটা সুরক্ষা এবং নির্ভরযোগ্যতা বজায় রাখতে গুরুত্বপূর্ণ। ArangoDB তে লগিং এবং ত্রুটি পরিচালনা করার সহজ পদ্ধতি রয়েছে, যা ডেভেলপারদের কার্যক্রম পর্যবেক্ষণ এবং ত্রুটি মোকাবিলার সুযোগ প্রদান করে।
common.read_more